package cn.chenxiejia;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @version : V1.0
 * @program: maven
 * @ClassName: Th1
 * @Description:
 * @Author: chenxiejia
 * @Date: 2022/1/27 10:08
 */
public class Th1 {

    //三种使用方式都需要Thread启动
    public static void main(String[] args) {
        //实现Runnable类，实例化后作为Tread的参数使用
        T1 ta = new T1();
        Thread tt = new Thread(ta);
        tt.start();
        //继承Thread直接实例化使用
        T2 tb = new T2();
        tb.start();
        //实现Callable类，有返货值
        // 执行 Callable 方式,需要 FutureTask 实现类的支持
        // FutureTask 实现类用于接收运算结果, FutureTask 是 Future 接口的实现类
        T3 tc = new T3(5);
        FutureTask<Integer> ft = new FutureTask(tc);
        new Thread(ft).start();

        try {
            System.out.println(ft.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }

    }
}
